diff --git a/tools/binman/comp_util.py b/tools/binman/comp_util.py
index 2f78bab..dc76ada 100644
--- a/tools/binman/comp_util.py
+++ b/tools/binman/comp_util.py
@@ -25,28 +25,20 @@
     This requires 'lz4' and 'lzma_alone' tools. It also requires an output
     directory to be previously set up, by calling PrepareOutputDir().
 
-    Care is taken to use unique temporary files so that this function can be
-    called from multiple threads.
-
     Args:
         indata (bytes): Input data to compress
-        algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+        algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
 
     Returns:
         bytes: Compressed data
     """
     if algo == 'none':
         return indata
-    fname = tempfile.NamedTemporaryFile(prefix='%s.comp.tmp' % algo,
-                                        dir=tools.GetOutputDir()).name
-    tools.WriteFile(fname, indata)
     if algo == 'lz4':
         data = LZ4.compress(indata)
     # cbfstool uses a very old version of lzma
     elif algo == 'lzma':
         data = LZMA_ALONE.compress(indata)
-    elif algo == 'gzip':
-        data = tools.Run('gzip', '-c', fname, binary=True)
     else:
         raise ValueError("Unknown algorithm '%s'" % algo)
     if with_header:
@@ -65,7 +57,7 @@
 
     Args:
         indata (bytes): Input data to decompress
-        algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+        algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
 
     Returns:
         (bytes) Compressed data
@@ -75,14 +67,10 @@
     if with_header:
         data_len = struct.unpack('<I', indata[:4])[0]
         indata = indata[4:4 + data_len]
-    fname = tools.GetOutputFilename('%s.decomp.tmp' % algo)
-    tools.WriteFile(fname, indata)
     if algo == 'lz4':
         data = LZ4.decompress(indata)
     elif algo == 'lzma':
         data = LZMA_ALONE.decompress(indata)
-    elif algo == 'gzip':
-        data = tools.Run('gzip', '-cd', fname, binary=True)
     else:
         raise ValueError("Unknown algorithm '%s'" % algo)
     return data
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 6e1c498..a3454dd 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -5076,6 +5076,15 @@
                 self._DoBinman(*args)
         self.assertIn('failed to fetch with all methods', stdout.getvalue())
 
+    def testInvalidCompress(self):
+        with self.assertRaises(ValueError) as e:
+            comp_util.compress(b'', 'invalid')
+        self.assertIn("Unknown algorithm 'invalid'", str(e.exception))
+
+        with self.assertRaises(ValueError) as e:
+            comp_util.decompress(b'1234', 'invalid')
+        self.assertIn("Unknown algorithm 'invalid'", str(e.exception))
+
 
 if __name__ == "__main__":
     unittest.main()
